home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / VS_804.ARJ / MISC.EXE / DICT2NG.PRG < prev    next >
Text File  |  1991-11-15  |  6KB  |  274 lines

  1. * Filename......: Dict2Ng.Prg
  2. *
  3. * Author........: Vernon E. Six, Jr.
  4. *
  5. * Last Update...: Wed  10-02-1991  13:35:55
  6. *
  7. * Notice........: Copyright (c) 1991 by Vernon E. Six, Jr.
  8. *                 All Rights Reserved World Wide
  9.  
  10. #include "FILEIO.CH"
  11. #include "SETCURS.CH"
  12. #include "SET.CH"
  13.  
  14. FUNCTION Dict2Ng(pc_FileName)
  15. *****
  16. * Prints a database dictionary listing to a Norton Guides DAT file
  17. *****
  18. LOCAL c_FileName
  19. LOCAL n_Handle
  20. LOCAL n_CurrRec  := 0
  21.          
  22.    VS_InitVern()
  23.    VS_NewScrn()
  24.  
  25.    SET(_SET_DELETED,.T.)
  26.  
  27.    *****
  28.    * Open the data dictionary files (create indexes if they don't exist!)
  29.    *****
  30.    BEGIN SEQUENCE
  31.  
  32.       *══════════════════════════════════════════════════════════*
  33.  
  34.       SELECT 0
  35.       IF .NOT. VS_Use("_DictHdr",.F.,"_DictHdr")
  36.          BREAK
  37.       ENDIF
  38.  
  39.       IF .NOT. FILE("_DictHdr.Ntx")
  40.          IF .NOT. VS_ShowNtx("_DictHdr","DBF_NAME","C")
  41.             BREAK
  42.          ENDIF
  43.       ENDIF
  44.  
  45.       dbClearIndex()
  46.       dbSetIndex("_DictHdr")
  47.  
  48.       *══════════════════════════════════════════════════════════*
  49.  
  50.       SELECT 0
  51.       IF .NOT. VS_Use("_DictFld",.F.,"_DictFld")
  52.          BREAK
  53.       ENDIF
  54.  
  55.       IF .NOT. FILE("_DictFld.Ntx")
  56.          IF .NOT. VS_ShowNtx("_DictFld","DBF_NAME+FIELD_NMBR","C")
  57.             BREAK
  58.          ENDIF
  59.       ENDIF
  60.  
  61.       IF .NOT. FILE("_DictFl2.Ntx")
  62.          IF .NOT. VS_ShowNtx("_DictFl2","DBF_NAME+FIELD_NAME","C")
  63.             BREAK
  64.          ENDIF
  65.       ENDIF
  66.  
  67.       dbClearIndex()
  68.       dbSetIndex("_DictFld")
  69.       dbSetIndex("_DictFl2")
  70.  
  71.       *══════════════════════════════════════════════════════════*
  72.       SELECT 0
  73.       IF .NOT. VS_Use("_DictNtx",.F.,"_DictNtx")
  74.          BREAK
  75.       ENDIF
  76.  
  77.       IF .NOT. FILE("_DictNtx.Ntx")
  78.          IF .NOT. VS_ShowNtx("_DictNtx","DBF_NAME+ORDER","C")
  79.             BREAK
  80.          ENDIF
  81.       ENDIF
  82.  
  83.       dbClearIndex()
  84.       dbSetIndex("_DictNtx")
  85.  
  86.       *══════════════════════════════════════════════════════════*
  87.       
  88.       *****
  89.       * Make an assumption if it isn't specified
  90.       *****
  91.       IF VALTYPE(pc_FileName) == "U"
  92.          pc_FileName = "DICT_RPT"
  93.       ENDIF
  94.       
  95.       *****
  96.       * Open the .DAT file (since we are going to create it!)
  97.       *****
  98.       c_FileName = ALLTRIM(pc_FileName)+".DAT"
  99.  
  100.       IF (n_Handle := FCREATE( c_FileName, 0 ) ) = F_ERROR
  101.          VS_TELL(3,0,PADC("Unable to create "+c_FileName))
  102.          BREAK
  103.        ELSE
  104.          VS_Write(n_Handle)
  105.       ENDIF
  106.  
  107.       VS_GrabScr()
  108.  
  109.          VS_Palette(2)
  110.          VS_NewScrn()
  111.  
  112.          VS_Wind(8,13,16,66,"","")
  113.  
  114.          SETCURSOR(SC_NONE)
  115.  
  116.          @ 10,15 SAY PADC("Dict2Ng.Exe           Wed  10-02-1991  13:40:27",50)
  117.  
  118.          @ 12,15 SAY PADC("Writing Data File!",50)
  119.  
  120.          @ 14,15 SAY REPLICATE("░",50)
  121.          
  122.          _DICTHDR->( dbGoTop() )
  123.  
  124.          DO WHILE .NOT. _DICTHDR->( EOF() )
  125.  
  126.             n_CurrRec++
  127.  
  128.             @ 14,15 SAY REPLICATE("█", VS_ScrlBar( n_CurrRec, 50, RECCOUNT() ))
  129.    
  130.             *****
  131.             * Print the structure first
  132.             *****
  133.             PRT_STRU()
  134.  
  135.             *****
  136.             * Then print the index keys
  137.             *****
  138.             PRT_NTX()
  139.  
  140.             *****
  141.             * Next... please.
  142.             *****
  143.             _DICTHDR->( dbSkip() )
  144.  
  145.          ENDDO
  146.  
  147.          FCLOSE( n_Handle )
  148.  
  149.       VS_PutScr()
  150.  
  151.       dbCloseAll()
  152.  
  153.    END SEQUENCE
  154.                
  155. RETURN(NIL)
  156. *** EOF: Dict2Ng.Prg ********************************************************
  157.  
  158.  
  159. FUNCTION PRT_STRU
  160. *****
  161. * Print the structure
  162. *****
  163. LOCAL c_Temp
  164.  
  165.    VS_WriteLn( "'" + REPLICATE("─",70) )
  166.    VS_WriteLn( "!short: " + _DICTHDR->DBF_NAME + "   " + _DICTHDR->DESC )
  167.    VS_WriteLn( "^B"       + _DICTHDR->DBF_NAME + "   " + _DICTHDR->DESC + "^B" )
  168.  
  169.    VS_WriteLn( [] )
  170.    VS_WriteLn( [] )
  171.  
  172.    c_Temp = "DataBase Structure"
  173.    VS_WriteLn( SPACE(VS_CENTER(c_Temp)) + "^U"+ c_Temp +"^U" )
  174.    VS_WriteLn( [] )
  175.  
  176.    VS_WriteLn( "^B" + ;
  177.                SPACE(2) + "###" + ;
  178.                SPACE(2) + "Field Name" + ;
  179.                SPACE(2) + "Type" + ;
  180.                SPACE(2) + "Len" + ;
  181.                SPACE(2) + "Dec" + ;
  182.                SPACE(2) + "Description" )
  183.  
  184.    VS_WriteLn( SPACE(2) + REPLICATE("─",74) + "^B" )
  185.                                                     
  186.    _DICTFLD->( dbSeek( _DICTHDR->DBF_NAME ) )
  187.  
  188.    DO WHILE .NOT. _DICTFLD->( EOF() )
  189.  
  190.       *****
  191.       * Have we skipped past this database?
  192.       *****
  193.       IF _DICTFLD->DBF_NAME <> _DICTHDR->DBF_NAME
  194.          EXIT
  195.       ENDIF
  196.  
  197.       *****
  198.       * Print it!
  199.       *****
  200.       VS_WriteLn(  SPACE(2) + _DICTFLD->FIELD_NMBR + ;
  201.                    SPACE(2) + _DICTFLD->FIELD_NAME + ;
  202.                    SPACE(4) + _DICTFLD->FIELD_TYPE + ;
  203.                    SPACE(3) + STR(_DICTFLD->FIELD_LEN,3,0) + ;
  204.                    SPACE(2) + STR(_DICTFLD->FIELD_DEC,3,0) + ;
  205.                    SPACE(2) + _DICTFLD->DESC )
  206.  
  207.       *****
  208.       * Next... please.
  209.       *****
  210.       _DICTFLD->(dbSkip())
  211.  
  212.    ENDDO
  213.  
  214. RETURN(NIL)
  215. *** EOF: PRT_STRU() *********************************************************
  216.  
  217.  
  218. FUNCTION PRT_NTX
  219. *****
  220. * Print the index keys
  221. *****
  222. PRIVATE c_Temp
  223.  
  224.    VS_WriteLn( [] )
  225.    VS_WriteLn( [] )
  226.  
  227.    c_Temp = "Index Keys"
  228.    VS_WriteLn( SPACE(VS_CENTER(c_Temp)) + "^U"+ c_Temp +"^U" )
  229.    VS_WriteLn( [] )
  230.  
  231.    VS_WriteLn( "^B" + ;
  232.                SPACE(2) + "##" + ;
  233.                SPACE(2) + "NTX Name" + ;
  234.                SPACE(2) + "Type" + ;
  235.                SPACE(2) + "Key" )
  236.  
  237.    VS_WriteLn( SPACE(2) + REPLICATE("─",74) + "^B" )
  238.  
  239.  
  240.    _DICTNTX->( dbSeek( _DICTHDR->DBF_NAME ) )
  241.  
  242.    DO WHILE .NOT. _DICTNTX->( EOF() )
  243.  
  244.       *****
  245.       * Have we skipped past this database?
  246.       *****
  247.       IF _DICTNTX->DBF_NAME <> _DICTHDR->DBF_NAME
  248.          EXIT
  249.       ENDIF
  250.  
  251.       *****
  252.       * Print it!
  253.       *****
  254.       VS_WriteLn( SPACE(2) + _DICTNTX->ORDER + ;
  255.                   SPACE(2) + _DICTNTX->NTX_NAME + ;
  256.                   SPACE(4) + _DICTNTX->TYPE + ;
  257.                   SPACE(3) + SUBSTR(_DICTNTX->KEY,1,50) )
  258.  
  259.       IF .NOT. EMPTY(SUBSTR(_DICTNTX->KEY,50,30))
  260.         VS_WriteLn( SPACE(30) + SUBSTR(_DICTNTX->KEY,50,30) )
  261.       ENDIF
  262.  
  263.       *****
  264.       * Next... please.
  265.       *****
  266.       _DICTNTX->( dbSkip() )
  267.  
  268.    ENDDO
  269.  
  270. RETURN(NIL)
  271. *** EOF: PRT_NTX() **********************************************************
  272.  
  273.  
  274.